home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / GameSprocket SDKs / SoundSprocket_SDK / Interfaces&Libraries / SoundSprocket.h next >
Encoding:
C/C++ Source or Header  |  1999-10-29  |  20.3 KB  |  624 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        SoundSprocket.h
  3.  
  4.      Contains:    SoundSprocket interfaces
  5.  
  6.      Version:    Technology:    1.7
  7.                  Release:    SoundSprocket SDK, Use with 3.2 Universal Headers
  8.  
  9.      Copyright:    © 1996-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __SOUNDSPROCKET__
  18. #define __SOUNDSPROCKET__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __EVENTS__
  25. #include <Events.h>
  26. #endif
  27.  
  28. #ifndef __QD3D__
  29. #include <QD3D.h>
  30. #endif
  31.  
  32. #ifndef __QD3DCAMERA__
  33. #include <QD3DCamera.h>
  34. #endif
  35.  
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=mac68k
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59. /*******************************************************************************
  60.  *    This stuff will be moved to Errors.h in a subsequent release
  61.  ******************************************************************************/
  62. enum {
  63.     kSSpInternalErr                = -30340,
  64.     kSSpVersionErr                = -30341,
  65.     kSSpCantInstallErr            = -30342,
  66.     kSSpParallelUpVectorErr        = -30343,
  67.     kSSpScaleToZeroErr            = -30344
  68. };
  69.  
  70.  
  71. /*******************************************************************************
  72.  *    SndSetInfo/SndGetInfo Messages
  73.  ******************************************************************************/
  74. /*    The siSSpCPULoadLimit = '3dll' selector for SndGetInfo fills in a value of    */
  75. /*    type UInt32.                                                                */
  76.  
  77. enum {
  78.     kSSpSpeakerKind_Stereo        = 0,
  79.     kSSpSpeakerKind_Mono        = 1,
  80.     kSSpSpeakerKind_Headphones    = 2
  81. };
  82.  
  83.  
  84. /*    This is the data type is used with the SndGet/SetInfo selector                */
  85. /*    siSSpSpeakerSetup = '3dst'                                                    */
  86.  
  87. struct SSpSpeakerSetupData {
  88.     UInt32                             speakerKind;                /* Speaker configuration                */
  89.     float                             speakerAngle;                /* Angle formed by user and speakers    */
  90.  
  91.     UInt32                             reserved0;                    /* Reserved for future use -- set to 0    */
  92.     UInt32                             reserved1;                    /* Reserved for future use -- set to 0    */
  93. };
  94. typedef struct SSpSpeakerSetupData        SSpSpeakerSetupData;
  95. enum {
  96.     kSSpMedium_Air                = 0,
  97.     kSSpMedium_Water            = 1
  98. };
  99.  
  100.  
  101. enum {
  102.     kSSpSourceMode_Unfiltered    = 0,                            /* No filtering applied                    */
  103.     kSSpSourceMode_Localized    = 1,                            /* Localized by source position            */
  104.     kSSpSourceMode_Ambient        = 2,                            /* Coming from all around                */
  105.     kSSpSourceMode_Binaural        = 3                                /* Already binaurally localized            */
  106. };
  107.  
  108.  
  109.  
  110. struct SSpLocationData {
  111.     float                             elevation;                    /* Angle of the meridian -- pos is up    */
  112.     float                             azimuth;                    /* Angle of the parallel -- pos is left    */
  113.     float                             distance;                    /* Distance between source and listener    */
  114.     float                             projectionAngle;            /* Cos(angle) between cone and listener    */
  115.     float                             sourceVelocity;                /* Speed of source toward the listener    */
  116.     float                             listenerVelocity;            /*Speed of listener toward the source    */
  117. };
  118. typedef struct SSpLocationData            SSpLocationData;
  119.  
  120. struct SSpVirtualSourceData {
  121.     float                             attenuation;                /* Attenuation factor                    */
  122.     SSpLocationData                 location;                    /* Location of virtual source            */
  123. };
  124. typedef struct SSpVirtualSourceData        SSpVirtualSourceData;
  125. /*    This is the data type is used with the SndGet/SetInfo selector                */
  126. /*    siSSpLocalization = '3dif'                                                    */
  127.  
  128. struct SSpLocalizationData {
  129.     UInt32                             cpuLoad;                    /* CPU load vs. quality -- 0 is best    */
  130.  
  131.     UInt32                             medium;                        /* Medium for sound propagation            */
  132.     float                             humidity;                    /* Humidity when medium is air            */
  133.     float                             roomSize;                    /* Reverb model -- distance bet. walls    */
  134.     float                             roomReflectivity;            /*Reverb model -- bounce attenuation    */
  135.     float                             reverbAttenuation;            /*Reverb model -- mix level            */
  136.  
  137.     UInt32                             sourceMode;                    /* Type of filtering to apply            */
  138.     float                             referenceDistance;            /*Nominal distance for recording        */
  139.     float                             coneAngleCos;                /* Cos(angle/2) of attenuation cone        */
  140.     float                             coneAttenuation;            /* Attenuation outside the cone            */
  141.     SSpLocationData                 currentLocation;            /* Location of the sound                 */
  142.  
  143.     UInt32                             reserved0;                    /* Reserved for future use -- set to 0    */
  144.     UInt32                             reserved1;                    /* Reserved for future use -- set to 0    */
  145.     UInt32                             reserved2;                    /* Reserved for future use -- set to 0    */
  146.     UInt32                             reserved3;                    /* Reserved for future use -- set to 0    */
  147.  
  148.     UInt32                             virtualSourceCount;            /*Number of reflections                */
  149.     SSpVirtualSourceData             virtualSource[4];            /*The reflections                        */
  150. };
  151. typedef struct SSpLocalizationData        SSpLocalizationData;
  152. #if TARGET_CPU_PPC
  153. typedef CALLBACK_API_C( Boolean , SSpEventProcPtr )(EventRecord *inEvent);
  154. /*******************************************************************************
  155.  *    Global functions
  156.  ******************************************************************************/
  157. EXTERN_API_C( OSStatus )
  158. SSpConfigureSpeakerSetup        (SSpEventProcPtr         inEventProcPtr);
  159.  
  160. EXTERN_API_C( OSStatus )
  161. SSpGetCPULoadLimit                (UInt32 *                outCPULoadLimit);
  162.  
  163.  
  164. /*******************************************************************************
  165.  *    Routines for Maniulating Listeners
  166.  ******************************************************************************/
  167. typedef struct OpaqueSSpListenerReference*  SSpListenerReference;
  168. EXTERN_API_C( OSStatus )
  169. SSpListener_New                    (SSpListenerReference *    outListenerReference);
  170.  
  171. EXTERN_API_C( OSStatus )
  172. SSpListener_Dispose                (SSpListenerReference     inListenerReference);
  173.  
  174. EXTERN_API_C( OSStatus )
  175. SSpListener_SetTransform        (SSpListenerReference     inListenerReference,
  176.                                  const TQ3Matrix4x4 *    inTransform);
  177.  
  178. EXTERN_API_C( OSStatus )
  179. SSpListener_GetTransform        (SSpListenerReference     inListenerReference,
  180.                                  TQ3Matrix4x4 *            outTransform);
  181.  
  182. EXTERN_API_C( OSStatus )
  183. SSpListener_SetPosition            (SSpListenerReference     inListenerReference,
  184.                                  const TQ3Point3D *        inPosition);
  185.  
  186. EXTERN_API_C( OSStatus )
  187. SSpListener_GetPosition            (SSpListenerReference     inListenerReference,
  188.                                  TQ3Point3D *            outPosition);
  189.  
  190. EXTERN_API_C( OSStatus )
  191. SSpListener_SetOrientation        (SSpListenerReference     inListenerReference,
  192.                                  const TQ3Vector3D *    inOrientation);
  193.  
  194. EXTERN_API_C( OSStatus )
  195. SSpListener_GetOrientation        (SSpListenerReference     inListenerReference,
  196.                                  TQ3Vector3D *            outOrientation);
  197.  
  198. EXTERN_API_C( OSStatus )
  199. SSpListener_SetUpVector            (SSpListenerReference     inListenerReference,
  200.                                  const TQ3Vector3D *    inUpVector);
  201.  
  202. EXTERN_API_C( OSStatus )
  203. SSpListener_GetUpVector            (SSpListenerReference     inListenerReference,
  204.                                  TQ3Vector3D *            outUpVector);
  205.  
  206. EXTERN_API_C( OSStatus )
  207. SSpListener_SetCameraPlacement    (SSpListenerReference     inListenerReference,
  208.                                  const TQ3CameraPlacement * inCameraPlacement);
  209.  
  210. EXTERN_API_C( OSStatus )
  211. SSpListener_GetCameraPlacement    (SSpListenerReference     inListenerReference,
  212.                                  TQ3CameraPlacement *    outCameraPlacement);
  213.  
  214. EXTERN_API_C( OSStatus )
  215. SSpListener_SetVelocity            (SSpListenerReference     inListenerReference,
  216.                                  const TQ3Vector3D *    inVelocity);
  217.  
  218. EXTERN_API_C( OSStatus )
  219. SSpListener_GetVelocity            (SSpListenerReference     inListenerReference,
  220.                                  TQ3Vector3D *            outVelocity);
  221.  
  222. EXTERN_API_C( OSStatus )
  223. SSpListener_GetActualVelocity    (SSpListenerReference     inListenerReference,
  224.                                  TQ3Vector3D *            outVelocity);
  225.  
  226. EXTERN_API_C( OSStatus )
  227. SSpListener_SetMedium            (SSpListenerReference     inListenerReference,
  228.                                  UInt32                 inMedium,
  229.                                  float                     inHumidity);
  230.  
  231. EXTERN_API_C( OSStatus )
  232. SSpListener_GetMedium            (SSpListenerReference     inListenerReference,
  233.                                  UInt32 *                outMedium,
  234.                                  float *                outHumidity);
  235.  
  236. EXTERN_API_C( OSStatus )
  237. SSpListener_SetReverb            (SSpListenerReference     inListenerReference,
  238.                                  float                     inRoomSize,
  239.                                  float                     inRoomReflectivity,
  240.                                  float                     inReverbAttenuation);
  241.  
  242. EXTERN_API_C( OSStatus )
  243. SSpListener_GetReverb            (SSpListenerReference     inListenerReference,
  244.                                  float *                outRoomSize,
  245.                                  float *                outRoomReflectivity,
  246.                                  float *                outReverbAttenuation);
  247.  
  248. EXTERN_API_C( OSStatus )
  249. SSpListener_SetMetersPerUnit    (SSpListenerReference     inListenerReference,
  250.                                  float                     inMetersPerUnit);
  251.  
  252. EXTERN_API_C( OSStatus )
  253. SSpListener_GetMetersPerUnit    (SSpListenerReference     inListenerReference,
  254.                                  float *                outMetersPerUnit);
  255.  
  256.  
  257. /*******************************************************************************
  258.  *    Routines for Manipulating Sources
  259.  ******************************************************************************/
  260. typedef struct OpaqueSSpSourceReference*  SSpSourceReference;
  261. EXTERN_API_C( OSStatus )
  262. SSpSource_New                    (SSpSourceReference *    outSourceReference);
  263.  
  264. EXTERN_API_C( OSStatus )
  265. SSpSource_Dispose                (SSpSourceReference     inSourceReference);
  266.  
  267. EXTERN_API_C( OSStatus )
  268. SSpSource_CalcLocalization        (SSpSourceReference     inSourceReference,
  269.                                  SSpListenerReference     inListenerReference,
  270.                                  SSpLocalizationData *    out3DInfo);
  271.  
  272. EXTERN_API_C( OSStatus )
  273. SSpSource_SetTransform            (SSpSourceReference     inSourceReference,
  274.                                  const TQ3Matrix4x4 *    inTransform);
  275.  
  276. EXTERN_API_C( OSStatus )
  277. SSpSource_GetTransform            (SSpSourceReference     inSourceReference,
  278.                                  TQ3Matrix4x4 *            outTransform);
  279.  
  280. EXTERN_API_C( OSStatus )
  281. SSpSource_SetPosition            (SSpSourceReference     inSourceReference,
  282.                                  const TQ3Point3D *        inPosition);
  283.  
  284. EXTERN_API_C( OSStatus )
  285. SSpSource_GetPosition            (SSpSourceReference     inSourceReference,
  286.                                  TQ3Point3D *            outPosition);
  287.  
  288. EXTERN_API_C( OSStatus )
  289. SSpSource_SetOrientation        (SSpSourceReference     inSourceReference,
  290.                                  const TQ3Vector3D *    inOrientation);
  291.  
  292. EXTERN_API_C( OSStatus )
  293. SSpSource_GetOrientation        (SSpSourceReference     inSourceReference,
  294.                                  TQ3Vector3D *            outOrientation);
  295.  
  296. EXTERN_API_C( OSStatus )
  297. SSpSource_SetUpVector            (SSpSourceReference     inSourceReference,
  298.                                  const TQ3Vector3D *    inUpVector);
  299.  
  300. EXTERN_API_C( OSStatus )
  301. SSpSource_GetUpVector            (SSpSourceReference     inSourceReference,
  302.                                  TQ3Vector3D *            outUpVector);
  303.  
  304. EXTERN_API_C( OSStatus )
  305. SSpSource_SetCameraPlacement    (SSpSourceReference     inSourceReference,
  306.                                  const TQ3CameraPlacement * inCameraPlacement);
  307.  
  308. EXTERN_API_C( OSStatus )
  309. SSpSource_GetCameraPlacement    (SSpSourceReference     inSourceReference,
  310.                                  TQ3CameraPlacement *    outCameraPlacement);
  311.  
  312. EXTERN_API_C( OSStatus )
  313. SSpSource_SetVelocity            (SSpSourceReference     inSourceReference,
  314.                                  const TQ3Vector3D *    inVelocity);
  315.  
  316. EXTERN_API_C( OSStatus )
  317. SSpSource_GetVelocity            (SSpSourceReference     inSourceReference,
  318.                                  TQ3Vector3D *            outVelocity);
  319.  
  320. EXTERN_API_C( OSStatus )
  321. SSpSource_GetActualVelocity        (SSpSourceReference     inSourceReference,
  322.                                  TQ3Vector3D *            outVelocity);
  323.  
  324. EXTERN_API_C( OSStatus )
  325. SSpSource_SetCPULoad            (SSpSourceReference     inSourceReference,
  326.                                  UInt32                 inCPULoad);
  327.  
  328. EXTERN_API_C( OSStatus )
  329. SSpSource_GetCPULoad            (SSpSourceReference     inSourceReference,
  330.                                  UInt32 *                outCPULoad);
  331.  
  332. EXTERN_API_C( OSStatus )
  333. SSpSource_SetMode                (SSpSourceReference     inSourceReference,
  334.                                  UInt32                 inMode);
  335.  
  336. EXTERN_API_C( OSStatus )
  337. SSpSource_GetMode                (SSpSourceReference     inSourceReference,
  338.                                  UInt32 *                outMode);
  339.  
  340. EXTERN_API_C( OSStatus )
  341. SSpSource_SetReferenceDistance    (SSpSourceReference     inSourceReference,
  342.                                  float                     inReferenceDistance);
  343.  
  344. EXTERN_API_C( OSStatus )
  345. SSpSource_GetReferenceDistance    (SSpSourceReference     inSourceReference,
  346.                                  float *                outReferenceDistance);
  347.  
  348. EXTERN_API_C( OSStatus )
  349. SSpSource_SetSize                (SSpSourceReference     inSourceReference,
  350.                                  float                     inLength,
  351.                                  float                     inWidth,
  352.                                  float                     inHeight);
  353.  
  354. EXTERN_API_C( OSStatus )
  355. SSpSource_GetSize                (SSpSourceReference     inSourceReference,
  356.                                  float *                outLength,
  357.                                  float *                outWidth,
  358.                                  float *                outHeight);
  359.  
  360. EXTERN_API_C( OSStatus )
  361. SSpSource_SetAngularAttenuation    (SSpSourceReference     inSourceReference,
  362.                                  float                     inConeAngle,
  363.                                  float                     inConeAttenuation);
  364.  
  365. EXTERN_API_C( OSStatus )
  366. SSpSource_GetAngularAttenuation    (SSpSourceReference     inSourceReference,
  367.                                  float *                outConeAngle,
  368.                                  float *                outConeAttenuation);
  369.  
  370. /*******************************************************************************
  371.  *    OpenGL Calling Convention Call Variants
  372.  ******************************************************************************/
  373. EXTERN_API_C( OSStatus )
  374. SSpListener_SetTransformfv        (SSpListenerReference     inListenerReference,
  375.                                  const float *            inTransform);
  376.  
  377. EXTERN_API_C( OSStatus )
  378. SSpListener_GetTransformfv        (SSpListenerReference     inListenerReference,
  379.                                  float *                outTransform);
  380.  
  381. EXTERN_API_C( OSStatus )
  382. SSpListener_SetPosition3f        (SSpListenerReference     inListenerReference,
  383.                                  float                     inX,
  384.                                  float                     inY,
  385.                                  float                     inZ);
  386.  
  387. EXTERN_API_C( OSStatus )
  388. SSpListener_SetPositionfv        (SSpListenerReference     inListenerReference,
  389.                                  const float *            inPosition);
  390.  
  391. EXTERN_API_C( OSStatus )
  392. SSpListener_GetPositionfv        (SSpListenerReference     inListenerReference,
  393.                                  float *                outPosition);
  394.  
  395. EXTERN_API_C( OSStatus )
  396. SSpListener_SetOrientation3f    (SSpListenerReference     inListenerReference,
  397.                                  float                     inX,
  398.                                  float                     inY,
  399.                                  float                     inZ);
  400.  
  401. EXTERN_API_C( OSStatus )
  402. SSpListener_SetOrientationfv    (SSpListenerReference     inListenerReference,
  403.                                  const float *            inOrientation);
  404.  
  405. EXTERN_API_C( OSStatus )
  406. SSpListener_GetOrientationfv    (SSpListenerReference     inListenerReference,
  407.                                  float *                outOrientation);
  408.  
  409. EXTERN_API_C( OSStatus )
  410. SSpListener_SetUpVector3f        (SSpListenerReference     inListenerReference,
  411.                                  float                     inX,
  412.                                  float                     inY,
  413.                                  float                     inZ);
  414.  
  415. EXTERN_API_C( OSStatus )
  416. SSpListener_SetUpVectorfv        (SSpListenerReference     inListenerReference,
  417.                                  const float *            inUpVector);
  418.  
  419. EXTERN_API_C( OSStatus )
  420. SSpListener_GetUpVectorfv        (SSpListenerReference     inListenerReference,
  421.                                  float *                outUpVector);
  422.  
  423. EXTERN_API_C( OSStatus )
  424. SSpListener_SetCameraPlacementfv (SSpListenerReference     inListenerReference,
  425.                                  const float *            inCameraLocation,
  426.                                  const float *            inPointOfInterest,
  427.                                  const float *            inUpVector);
  428.  
  429. EXTERN_API_C( OSStatus )
  430. SSpListener_GetCameraPlacementfv (SSpListenerReference     inListenerReference,
  431.                                  float *                outCameraPlacement,
  432.                                  float *                outPointOfInterest,
  433.                                  float *                outUpVector);
  434.  
  435. EXTERN_API_C( OSStatus )
  436. SSpListener_SetVelocity3f        (SSpListenerReference     inListenerReference,
  437.                                  float                     inX,
  438.                                  float                     inY,
  439.                                  float                     inZ);
  440.  
  441. EXTERN_API_C( OSStatus )
  442. SSpListener_SetVelocityfv        (SSpListenerReference     inListenerReference,
  443.                                  const float *            inVelocity);
  444.  
  445. EXTERN_API_C( OSStatus )
  446. SSpListener_GetVelocityfv        (SSpListenerReference     inListenerReference,
  447.                                  float *                outVelocity);
  448.  
  449. EXTERN_API_C( OSStatus )
  450. SSpListener_GetActualVelocityfv    (SSpListenerReference     inListenerReference,
  451.                                  float *                outVelocity);
  452.  
  453. EXTERN_API_C( OSStatus )
  454. SSpSource_SetTransformfv        (SSpSourceReference     inSourceReference,
  455.                                  const float *            inTransform);
  456.  
  457. EXTERN_API_C( OSStatus )
  458. SSpSource_GetTransformfv        (SSpSourceReference     inSourceReference,
  459.                                  float *                outTransform);
  460.  
  461. EXTERN_API_C( OSStatus )
  462. SSpSource_SetPosition3f            (SSpSourceReference     inSourceReference,
  463.                                  float                     inX,
  464.                                  float                     inY,
  465.                                  float                     inZ);
  466.  
  467. EXTERN_API_C( OSStatus )
  468. SSpSource_SetPositionfv            (SSpSourceReference     inSourceReference,
  469.                                  const float *            inPosition);
  470.  
  471. EXTERN_API_C( OSStatus )
  472. SSpSource_GetPositionfv            (SSpSourceReference     inSourceReference,
  473.                                  float *                outPosition);
  474.  
  475. EXTERN_API_C( OSStatus )
  476. SSpSource_SetOrientation3f        (SSpSourceReference     inSourceReference,
  477.                                  float                     inX,
  478.                                  float                     inY,
  479.                                  float                     inZ);
  480.  
  481. EXTERN_API_C( OSStatus )
  482. SSpSource_SetOrientationfv        (SSpSourceReference     inSourceReference,
  483.                                  const float *            inOrientation);
  484.  
  485. EXTERN_API_C( OSStatus )
  486. SSpSource_GetOrientationfv        (SSpSourceReference     inSourceReference,
  487.                                  float *                outOrientation);
  488.  
  489. EXTERN_API_C( OSStatus )
  490. SSpSource_SetUpVector3f            (SSpSourceReference     inSourceReference,
  491.                                  float                     inX,
  492.                                  float                     inY,
  493.                                  float                     inZ);
  494.  
  495. EXTERN_API_C( OSStatus )
  496. SSpSource_SetUpVectorfv            (SSpSourceReference     inSourceReference,
  497.                                  const float *            inUpVector);
  498.  
  499. EXTERN_API_C( OSStatus )
  500. SSpSource_GetUpVectorfv            (SSpSourceReference     inSourceReference,
  501.                                  float *                outUpVector);
  502.  
  503. EXTERN_API_C( OSStatus )
  504. SSpSource_SetCameraPlacementfv    (SSpSourceReference     inSourceReference,
  505.                                  const float *            inCameraLocation,
  506.                                  const float *            inPointOfInterest,
  507.                                  const float *            inUpVector);
  508.  
  509. EXTERN_API_C( OSStatus )
  510. SSpSource_GetCameraPlacementfv    (SSpSourceReference     inSourceReference,
  511.                                  float *                outCameraPlacement,
  512.                                  float *                outPointOfInterest,
  513.                                  float *                outUpVector);
  514.  
  515. EXTERN_API_C( OSStatus )
  516. SSpSource_SetVelocity3f            (SSpSourceReference     inSourceReference,
  517.                                  float                     inX,
  518.                                  float                     inY,
  519.                                  float                     inZ);
  520.  
  521. EXTERN_API_C( OSStatus )
  522. SSpSource_SetVelocityfv            (SSpSourceReference     inSourceReference,
  523.                                  const float *            inVelocity);
  524.  
  525. EXTERN_API_C( OSStatus )
  526. SSpSource_GetVelocityfv            (SSpSourceReference     inSourceReference,
  527.                                  float *                outVelocity);
  528.  
  529. EXTERN_API_C( OSStatus )
  530. SSpSource_GetActualVelocityfv    (SSpSourceReference     inSourceReference,
  531.                                  float *                outVelocity);
  532.  
  533. #endif  /* TARGET_CPU_PPC */
  534.  
  535.  
  536. /*******************************************************************************
  537.  *    LATE-BREAKING NEWS
  538.  *
  539.  *    After the documentation was completed, it was decided that the SSpSetup
  540.  *    were not specific enough.  We renamed them to SSpSpeakerSetup.  These
  541.  *    #defines allow code to be written per the documentation.  But please use
  542.  *    the new, longer names, as the #defines will be removed in a later release.
  543.  ******************************************************************************/
  544. #define SSpConfigureSetup        SSpConfigureSpeakerSetup
  545.  
  546. #define siSSpSetup                siSSpSpeakerSetup
  547. #define SSpSetupData            SSpSpeakerSetupData
  548.  
  549.  
  550. /*******************************************************************************
  551.  *    MORE LATE-BREAKING NEWS
  552.  *
  553.  *    The SndGetInfo selector siSSpFilterVersion and datatype SSpFilterVersionData
  554.  *    have been removed in favor of an alternate way of accessing filter version
  555.  *    information.  The following function may be used for this purpose.
  556.  *******************************************************************************
  557. // **************************** GetSSpFilterVersion ****************************
  558. // Finds the manufacturer and version number of the SoundSprocket filter that
  559. // may be installed.  inManufacturer should be the manufacturer code specified
  560. // at the installation time, which may be zero to allow any manufacturer.
  561. // If no error is encountered, outManufacturer is set to the actual manufacturer
  562. // code and outMajorVersion and outMinorVersion are set to the component
  563. // specification level and manufacturer's implementation revision, respectively.
  564. OSStatus GetSSpFilterVersion(
  565.     OSType                    inManufacturer,
  566.     OSType*                    outManufacturer,
  567.     UInt32*                    outMajorVersion,
  568.     UInt32*                    outMinorVersion)
  569. {
  570.     OSStatus                err;
  571.     ComponentDescription    description;
  572.     Component                componentRef;
  573.     UInt32                    vers;
  574.     
  575.     // Set up the component description
  576.     description.componentType            = kSoundEffectsType;
  577.     description.componentSubType        = kSSpLocalizationSubType;
  578.     description.componentManufacturer    = inManufacturer;
  579.     description.componentFlags            = 0;        
  580.     description.componentFlagsMask        = 0;    
  581.     
  582.     // Find a component matching the description
  583.     componentRef = FindNextComponent(nil, &description);
  584.     if (componentRef == nil)  return couldntGetRequiredComponent;
  585.     
  586.     // Get the component description (for the manufacturer code)
  587.     err = GetComponentInfo(componentRef, &description, nil, nil, nil);
  588.     if (err != noErr)  return err;
  589.     
  590.     // Get the version composite
  591.     vers = (UInt32) GetComponentVersion((ComponentInstance) componentRef);
  592.     
  593.     // Return the results
  594.     *outManufacturer = description.componentManufacturer;
  595.     *outMajorVersion = HiWord(vers);
  596.     *outMinorVersion = LoWord(vers);
  597.     
  598.     return noErr;
  599. }
  600. *******************************************************************************/
  601.  
  602.  
  603.  
  604. #if PRAGMA_STRUCT_ALIGN
  605.     #pragma options align=reset
  606. #elif PRAGMA_STRUCT_PACKPUSH
  607.     #pragma pack(pop)
  608. #elif PRAGMA_STRUCT_PACK
  609.     #pragma pack()
  610. #endif
  611.  
  612. #ifdef PRAGMA_IMPORT_OFF
  613. #pragma import off
  614. #elif PRAGMA_IMPORT
  615. #pragma import reset
  616. #endif
  617.  
  618. #ifdef __cplusplus
  619. }
  620. #endif
  621.  
  622. #endif /* __SOUNDSPROCKET__ */
  623.  
  624.